package com.tdam2011.grupo04.entidades;

import java.io.Serializable;
import java.util.ArrayList;

import android.content.ContentResolver;
import android.content.ContentUris;
import android.database.Cursor;
import android.net.Uri;
import android.provider.ContactsContract;

public class Contacto implements Serializable{
	
	private static final long serialVersionUID = 1L;
	
	private String id;
	private String nombre;
	private ArrayList<String> telefonos;
	private ArrayList<EmailContacto> mail;
	private String usuario;
	private Uri foto;
	private boolean tieneFoto;
	private boolean tieneTelefono;
	private boolean tieneMail;
	
	public Contacto(){
		nombre= null;
		telefonos = new ArrayList<String>(0);
		mail = new ArrayList<EmailContacto>(0);
		tieneFoto= false;
		tieneTelefono= true;
		tieneMail= true;
		usuario= null;
	}

	/********************** M�TODOS SETTER Y GETTER ****************************/
	public String getNombre(){ 
		return nombre; 
	}
	
	public void setNombre(String nombre){ 
		this.nombre = nombre; 
	}

	public Uri getFoto(){ 
		return foto; 
	}
	
	public void setFoto(String idContacto){ 
		Uri person = ContentUris.withAppendedId(ContactsContract.Contacts.CONTENT_URI, Long
	            .parseLong(idContacto));
	    this.foto= Uri.withAppendedPath(person, ContactsContract.Contacts.Photo.CONTENT_DIRECTORY);
	}

	public boolean getTieneFoto() {
		return tieneFoto;
	}

	public void setTieneFoto(boolean tieneFoto) {
		this.tieneFoto = tieneFoto;
	}
	
	public void setUsuario(String usuario){
		this.usuario= usuario;
	}
	
	public String getUsuario(){
		return usuario;
	}

	public boolean tieneTelefono() {
		return tieneTelefono;
	}

	public void setTieneTelefono(int tieneTelefono) {
		this.tieneTelefono = (tieneTelefono == 0)? false : true;
	}

	public boolean tieneMail() {
		return tieneMail;
	}

	public void setTieneMail(boolean tieneMail) {
		this.tieneMail = tieneMail;
	}

	public String getId() {
		return id;
	}
	
	public void setId(String id){
		this.id= id;
	}

	public void addTelefono(String numero) {
		telefonos.add(numero);
	}

	public ArrayList<String> getTelefonos() {
		return telefonos;
	}

	public void addEmail(String email, String emailType) {
		EmailContacto nuevo = new EmailContacto();
		nuevo.setValue(email);
		nuevo.setType(emailType);
		mail.add(nuevo);
	}
	
	public ArrayList<EmailContacto> getEmails() {
		return mail;
	}
	
	public void cargarTelefonos(ContentResolver cr){	
		Cursor pCur = cr.query(
				ContactsContract.CommonDataKinds.Phone.CONTENT_URI, null,
				ContactsContract.CommonDataKinds.Phone.CONTACT_ID + " = ?",
				new String[] { getId() }, null);
		while (pCur.moveToNext()) {
			addTelefono(pCur.getString(pCur
					.getColumnIndex(ContactsContract.CommonDataKinds.Phone.NUMBER)));
		}
		pCur.close();
	}
	
	public void cargarEmails(ContentResolver cr) {
		Cursor emailCur = cr.query(
				ContactsContract.CommonDataKinds.Email.CONTENT_URI, null,
				ContactsContract.CommonDataKinds.Email.CONTACT_ID + " = ?",
				new String[] { getId() }, null);
		while (emailCur.moveToNext()) {
			String email = emailCur
					.getString(emailCur
							.getColumnIndex(ContactsContract.CommonDataKinds.Email.DATA));
			String emailType = emailCur
					.getString(emailCur
							.getColumnIndex(ContactsContract.CommonDataKinds.Email.TYPE));
			addEmail(email, emailType);
		}
		emailCur.close();
		
		tieneMail= (mail.isEmpty())? false : true;
	}
}
